package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.xml.bind.ParseConversionEvent;

import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;
import com.sun.org.apache.bcel.internal.generic.GETSTATIC;

import model.Usuario;

public class DAOusuario {

	private Connection conexao;

	// criando a conexao
	public DAOusuario() {

		Conexaobd bd = new Conexaobd();
		conexao = bd.getConexao();

	}
///################################CADASTRAR#####################################################
	
	public void cadastra(Usuario usuario) {
		String sql = "insert into usuario (nome, senha, endereco, telefone, celular, menu)"
				+ " values (?,?,?,?,?,?)";
		try {

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, usuario.getNome());
			stmt.setString(2, usuario.getSenha());
			stmt.setString(3, usuario.getEndereco());
			stmt.setInt(4, usuario.getTelefone());
			stmt.setInt(5, usuario.getCelular());
			stmt.setInt(6, usuario.getMenu());

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	 
	

	}
///##############################################################################################	
	public Usuario pesquisaUm(String nome){
		
		String sql = "select * from usuario where nome = ?"; 
		
		try {
			
			PreparedStatement stmt = conexao.prepareStatement(sql);
			
			stmt.setString(1, nome);
			
			ResultSet rs = stmt.executeQuery();
			if(rs.next()){
				Usuario usuario = new Usuario();
				usuario.setId(rs.getInt("id"));
				usuario.setNome(rs.getString("nome"));
				usuario.setEndereco(rs.getString("endereco"));
				usuario.setCelular(rs.getInt("celular"));
				usuario.setTelefone(rs.getInt("telefone"));
				usuario.setMenu(rs.getInt("menu"));
				usuario.setSenha(rs.getString("senha"));
				
				return usuario;
				
			}
			
			else{
			
				
				System.out.println("Nao encontrado");//so pra testar
			}
			
			stmt.close();
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		return null;
		
		
	}

	///##############################################################################################	
		public Usuario pesquisaPorId(Integer id){
			
			String sql = "select * from usuario where id = ?"; 
			
			try {
				
				PreparedStatement stmt = conexao.prepareStatement(sql);
				
				stmt.setInt(1, id);
				
				ResultSet rs = stmt.executeQuery();
				if(rs.next()){
					Usuario usuario = new Usuario();
					usuario.setId(rs.getInt("id"));
					usuario.setNome(rs.getString("nome"));
					usuario.setEndereco(rs.getString("endereco"));
					usuario.setCelular(rs.getInt("celular"));
					usuario.setTelefone(rs.getInt("telefone"));
					usuario.setMenu(rs.getInt("menu"));
					usuario.setSenha(rs.getString("senha"));
					
					return usuario;
					
				}
				
				else{
				
					
					System.out.println("Nao encontrado");//so pra testar
				}
				
				stmt.close();
				
			} catch (Exception e) {
				// TODO: handle exception
			}
			
			return null;
		}
		

		

//################################################################################################################
	public ArrayList<Usuario> pesquisa(String nome) {

		String sql = "select * from usuario where nome like ?";
		ArrayList<Usuario> usuarios = new ArrayList<Usuario>();

		try {

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, "%" + nome + "%");

			ResultSet rs = stmt.executeQuery();
			while(rs.next()) {
				Usuario usuario = new Usuario();
				usuario.setId(rs.getInt("id"));
				usuario.setNome(rs.getString("nome"));
				usuario.setEndereco(rs.getString("endereco"));
				usuario.setCelular(rs.getInt("celular"));
				usuario.setTelefone(rs.getInt("telefone"));
				usuario.setMenu(rs.getInt("menu"));
				usuarios.add(usuario);
				// usuario.setNome(rs.getString(""));

			}
			stmt.close();
			return usuarios;

		} catch (Exception e) {
			// TODO: handle exception
		}

		return null;

	}
	//################################################################################################################
		public ArrayList<Usuario> pesquisacliente(String nome) {

			String sql = "select * from usuario where nome like ? and menu=3";
			ArrayList<Usuario> usuarios = new ArrayList<Usuario>();

			try {

				PreparedStatement stmt = conexao.prepareStatement(sql);

				stmt.setString(1, "%" + nome + "%");
				

				ResultSet rs = stmt.executeQuery();
				while(rs.next()) {
					Usuario usuario = new Usuario();
					usuario.setId(rs.getInt("id"));
					usuario.setNome(rs.getString("nome"));
					usuario.setEndereco(rs.getString("endereco"));
					usuario.setCelular(rs.getInt("celular"));
					usuario.setTelefone(rs.getInt("telefone"));
					usuario.setMenu(rs.getInt("menu"));
					usuarios.add(usuario);
					// usuario.setNome(rs.getString(""));

				}
				stmt.close();
				return usuarios;

			} catch (Exception e) {
				// TODO: handle exception
			}

			return null;

		}

///##############################################################################################
	
	public void alterar(Usuario usuario){
		String sql = "update usuario set nome = ?, senha = ? , endereco = ?, telefone = ?, celular = ?, menu = ? where id = ?";
		try {
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		stmt.setString(1, usuario.getNome());
		stmt.setString(2, usuario.getSenha());
		stmt.setString(3, usuario.getEndereco());
		stmt.setInt(4, usuario.getTelefone());
		stmt.setInt(5, usuario.getCelular());
		stmt.setInt(6, usuario.getMenu());
		stmt.setInt(7, usuario.getId());
		
		stmt.execute();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
///##############################################################################################
	public void excluir(Usuario usuario) {
		String sql = "Delete  from usuario where id=?";
		
		try{ 
			
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		
		stmt.setInt(1, usuario.getId());
		stmt.execute();
		stmt.close();
			// TODO: handle exception
		}catch (Exception e) {
			//e.printStackTrace();
		}
	}
	
///################################################################################################
	
}
